#!/usr/bin/env python3
"""
数据库测试数据验证脚本
用于确认测试数据是否成功插入到数据库中
"""
import os
import sys
from pathlib import Path

# 添加项目根目录到Python路径
sys.path.append(str(Path(__file__).parent.parent))

from app.core.database import SessionLocal
from app.models import department, user, employee, project, task

def verify_data():
    """验证数据库中的测试数据"""
    print("🔍 开始验证数据库测试数据...")
    
    db = SessionLocal()
    try:
        # 查询各表的数据量
        dept_count = db.query(department.Department).count()
        user_count = db.query(user.User).count()
        emp_count = db.query(employee.Employee).count()
        proj_count = db.query(project.Project).count()
        task_count = db.query(task.Task).count()
        
        total_count = dept_count + user_count + emp_count + proj_count + task_count
        
        print(f"📊 数据库各表数据统计：")
        print(f"   🏢 部门表: {dept_count} 条记录")
        print(f"   👥 用户表: {user_count} 条记录")
        print(f"   👨‍💼 员工表: {emp_count} 条记录")
        print(f"   📋 项目表: {proj_count} 条记录")
        print(f"   📝 任务表: {task_count} 条记录")
        print(f"   🔢 总计: {total_count} 条记录")
        
        # 验证数据关系
        print(f"\n🔗 验证数据关系：")
        
        # 查询部门并显示其下的用户
        departments = db.query(department.Department).limit(3).all()
        for dept in departments:
            users_in_dept = db.query(user.User).filter(user.User.department_id == dept.id).count()
            employees_in_dept = db.query(employee.Employee).filter(employee.Employee.department_id == dept.id).count()
            print(f"   📂 部门 '{dept.name}' 包含 {users_in_dept} 个用户和 {employees_in_dept} 个员工")
        
        # 查询项目并显示其任务
        projects = db.query(project.Project).limit(3).all()
        for proj in projects:
            tasks_in_proj = db.query(task.Task).filter(task.Task.project_id == proj.id).count()
            print(f"   📋 项目 '{proj.name}' 包含 {tasks_in_proj} 个任务")
        
        # 查询用户并显示其分配的任务
        users = db.query(user.User).filter(user.User.username != "admin").limit(3).all()
        for u in users:
            tasks_assigned = db.query(task.Task).filter(task.Task.assigned_to == u.id).count()
            projects_created = db.query(project.Project).filter(project.Project.created_by == u.id).count()
            print(f"   👤 用户 '{u.username}' 创建了 {projects_created} 个项目，分配了 {tasks_assigned} 个任务")
        
        # 检查特定的测试数据
        print(f"\n🎯 检查特定测试数据：")
        
        # 检查是否存在技术部
        tech_dept = db.query(department.Department).filter(department.Department.name == "技术部").first()
        if tech_dept:
            print(f"   ✅ 找到技术部 (ID: {tech_dept.id})")
        else:
            print(f"   ❌ 未找到技术部")
        
        # 检查是否存在测试用户
        test_user = db.query(user.User).filter(user.User.username == "user001").first()
        if test_user:
            print(f"   ✅ 找到测试用户 user001 (ID: {test_user.id})")
        else:
            print(f"   ❌ 未找到测试用户 user001")
        
        # 检查是否存在测试项目
        test_project = db.query(project.Project).filter(project.Project.name == "客户管理系统").first()
        if test_project:
            print(f"   ✅ 找到测试项目 客户管理系统 (ID: {test_project.id})")
        else:
            print(f"   ❌ 未找到测试项目 客户管理系统")
        
        print(f"\n✅ 数据验证完成！")
        print(f"💡 提示：系统中总共有 {total_count} 条数据")
        
    except Exception as e:
        print(f"❌ 验证数据时出错: {e}")
        raise
    finally:
        db.close()


def main():
    """主函数"""
    verify_data()


if __name__ == "__main__":
    main()